
package br.com.comprasPublicas.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

/**
 *
 * @author helsen_rafael
 * @since 11/01/11
 */
@Entity
@Table(name="pessoa")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="tipo_pessoa", discriminatorType=DiscriminatorType.INTEGER)
@DiscriminatorValue("0")
public class Pessoa implements Serializable  {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id_pessoa;

    @Column(name="observacoes", length=300)
    private String observacoes;

    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data_abertura;

    @Column(name="email", length=150)
    private String email;

    @Column(name="site", length=300)
    private String site;

    @OneToMany(mappedBy="pessoa",fetch=FetchType.LAZY)
    private Set<Endereco> endereco;

    @OneToMany(mappedBy="pessoa",fetch=FetchType.LAZY)
    private Set<Telefone> telefone;

    @Column(name="situacao", length=50)
    private String situacao;//inativa, devedora, ...

    @Column(name="total_gasto")
    private double total_gasto;

    @Cascade(CascadeType.ALL)

    /**
     * @return the id_pessoa
     */
    public int getId_pessoa() {
        return id_pessoa;
    }

    /**
     * @param id_pessoa the id_pessoa to set
     */
    public void setId_pessoa(int id_pessoa) {
        this.id_pessoa = id_pessoa;
    }

    /**
     * @return the observacoes
     */
    public String getObservacoes() {
        return observacoes;
    }

    /**
     * @param observacoes the observacoes to set
     */
    public void setObservacoes(String observacoes) {
        this.observacoes = observacoes;
    }

    /**
     * @return the data_abertura
     */
    public Date getData_abertura() {
        return data_abertura;
    }

    /**
     * @param data_abertura the data_abertura to set
     */
    public void setData_abertura(Date data_abertura) {
        this.data_abertura = data_abertura;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the site
     */
    public String getSite() {
        return site;
    }

    /**
     * @param site the site to set
     */
    public void setSite(String site) {
        this.site = site;
    }

    /**
     * @return the situacao
     */
    public String getSituacao() {
        return situacao;
    }

    /**
     * @param situacao the situacao to set
     */
    public void setSituacao(String situacao) {
        this.situacao = situacao;
    }

    /**
     * @return the total_gasto
     */
    public double getTotal_gasto() {
        return total_gasto;
    }

    /**
     * @param total_gasto the total_gasto to set
     */
    public void setTotal_gasto(double total_gasto) {
        this.total_gasto = total_gasto;
    }

    /**
     * @return the telefone
     */
    public Set<Telefone> getTelefone() {
        return telefone;
    }

    /**
     * @param telefone the telefone to set
     */
    public void setTelefone(Set<Telefone> telefone) {
        this.telefone = telefone;
    }

    /**
     * @return the endereco
     */
    public Set<Endereco> getEndereco() {
        return endereco;
    }

    /**
     * @param endereco the endereco to set
     */
    public void setEndereco(Set<Endereco> endereco) {
        this.endereco = endereco;
    }

    


}
